import {FloatNode} from '../inputs/FloatNode.js';

class MaxMIPLevelNode extends FloatNode {

  constructor(texture) {

    super();

    this.texture = texture;

    this.maxMIPLevel = 0;

  }

  get value() {

    if (this.maxMIPLevel === 0) {

      var image = this.texture.value.image;

      if (Array.isArray(image)) image = image[0];

      this.maxMIPLevel = image !== undefined ? Math.log(Math.max(image.width, image.height)) * Math.LOG2E : 0;

    }

    return this.maxMIPLevel;

  }

  set value(val) {


  }

  toJSON(meta) {

    let data = this.getJSONNode(meta);

    if (!data) {

      data = this.createJSONNode(meta);

      data.texture = this.texture.uuid;

    }

    return data;

  }

}

MaxMIPLevelNode.prototype.nodeType = 'MaxMIPLevel';

export {MaxMIPLevelNode};
